package bluejTp1Project;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Personne {
	public String name;
	public SalleDeSport salleDeSport;

	public SalleDeSport getSalleDeSport() {
		return salleDeSport;
	}

	public void setSalleDeSport(SalleDeSport salleDeSports) {	
		SalleDeSport ancienne_salle = this.getSalleDeSport();
		if(salleDeSports.getPersonnes() == null)
		{
			this.salleDeSport = salleDeSports;
			salleDeSports.setNbrAdherent(1);
			Personne[] tabTest = new Personne[salleDeSport.getNbrAdherent()];
			tabTest[0] = this;
			salleDeSport.setPersonnes(tabTest);
			if(ancienne_salle != null){
				ancienne_salle.setPersonnes(suppressionElementTableau(ancienne_salle.getPersonnes(), this));
				ancienne_salle.setNbrAdherent(ancienne_salle.getNbrAdherent() - 1);
			}
		}
		else{
			//SalleDeSport sds = this.getSalleDeSport();
			this.salleDeSport = salleDeSports;
			salleDeSport.setNbrAdherent(salleDeSport.getNbrAdherent()+1);
			Personne[] toto = new Personne[salleDeSport.getNbrAdherent()];
			Personne[] tata = salleDeSport.getPersonnes();
			for (int i =0; i < tata.length ; i++)
			{
				toto[i]=tata[i];
			}
			toto[salleDeSport.getNbrAdherent()-1] = this;
			salleDeSport.setPersonnes(toto);
			if(ancienne_salle != null){
				ancienne_salle.setPersonnes(suppressionElementTableau(ancienne_salle.getPersonnes(), this));
				ancienne_salle.setNbrAdherent(ancienne_salle.getNbrAdherent() - 1);
			}
		}
	}
	
	public static Personne[] suppressionElementTableau(Personne[] tabPersonne, Personne person){
		Personne[] tabPersonAJour = new Personne[tabPersonne.length -1];
		@SuppressWarnings("unused")
		int indicePerson = 0;
		for(int i =0; i <tabPersonne.length; i++){
			if(tabPersonne[i] == person){
				indicePerson = i;
			}
		}
		for (int j = indicePerson; j<tabPersonne.length-1; j++ ){
			tabPersonAJour[j]= tabPersonne[j+1];
		}
		for (int k = 0; k<indicePerson; k++ ){
			tabPersonAJour[k]= tabPersonne[k];
		}
		
		return tabPersonAJour;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
		if(name.length()> 15){
			this.name = name.substring(0, 5);
		}else{
			this.name = name;
		}
	}

	public static void main(String[] args) {
		/*************************************************************************
		 * TEST 2 : Affichage des données relatives à la salle de chaque personne
		 *************************************************************************/
		/*
		SalleDeSport salle2 = new SalleDeSport();
		SalleDeSport salle1 = new SalleDeSport();
		Personne toto = new Personne();
		Personne tata = new Personne();
		Personne tutu = new Personne();
		Personne[] tabPerson = {toto, tutu};
		Personne[] tabPersonbis = {tata};
		salle2.setPersonnes(tabPerson);
		salle2.setNbrAdherent(66);
		salle2.setTarifMensuel(30);
		salle1.setPersonnes(tabPersonbis);
		salle1.setNbrAdherent(12);
		salle1.setTarifMensuel(50);
		System.out.println("###### DONNEES RELATIVE A LA SALLE DE TOTO et TUTU #######");
		System.out.println("Nombre d'adherents à la salle :"+toto.getSalleDeSport().getNbrAdherent());
		System.out.println("Tarif Mensuel de la salle :"+toto.getSalleDeSport().getTarifMensuel() +" Euros");
		System.out.println("###### DONNEES RELATIVE A LA SALLE DE TATA #######");
		System.out.println("Nombre d'adherents à la salle :"+tata.getSalleDeSport().getNbrAdherent());
		System.out.println("Tarif Mensuel de la salle :"+tata.getSalleDeSport().getTarifMensuel()+" Euros");
		*/
		Personne toto = new Personne();
		Personne tutu = new Personne();
		Personne tata = new Personne();
		Personne titi = new Personne();
		Personne[] tabPerson = {toto, tutu,tata,titi};
		Personne[] tabPersonbis =  suppressionElementTableau(tabPerson, tutu);
		System.out.println("###### DONNEES RELATIVE A LA SALLE DE TOTO et TUTU #######");
	}

}
